package com.itfenghuang.day09;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

/*
    1.键值对集合    双列集合
    2.key唯一,value可重复
    3.增删改查
    4.使用keySet遍历集合
 */
public class A03_Map集合 {
    /*
        1.案例
            在容器中存储年龄和姓名
        2.概述
            1).Map<K,V>  K:键的数据类型    V:值的数据类型
            2).特点:  一个键对应一个值  键不可以重复值不可以重复
        3.Map常用方法
            1).void clear() 清空集合中元素
               boolean containsKey(Object key) 判断map集合中是否包含指定的键
               boolean containsValue(Object value) 判断map集合中是否包含指定的值
               V get(Object key) 根据键获取值
               boolean isEmpty() 集合元素个数是否是0
               V put(K key, V value)添加
               V remove(Object key) 根据键删除键值对
               int size() 元素的个数
               Set<Map.Entry<k,v>> entrySet()将map集合的每一个元素封装成键值对对象,然后在放到Set集合中
         4.遍历 Map集合
                特殊:  实现步骤   将双列集合变成单列集合;
                    Set<k> KeySet() 将map集合中的所有键值全部存储到Set中
                    使用KeySet()方法将map集合中的键存储到set集合中
                    遍历set集合,依次获取到map集合的k
                    通过k获取value
     */
    public static void main(String[] args) {
        HashMap<String, Integer> map = new HashMap<>();
//        添加
        map.put("小乖",16);
        map.put("小呆",20);
        map.put("小艾",18);
//        System.out.println(map);
//        修改
//        map.put("小乖", 17);
//        System.out.println(map);
//        删除
//        map.remove("小艾");
//        System.out.println(map);
//        查
        Integer i=map.get("小乖");
        System.out.println(i);
//        System.out.println(map);
//        清空
//        map.clear();
//        System.out.println(map);
//        包含
//        boolean b = map.containsKey("小乖");
//        System.out.println(b);
//        boolean a = map.containsValue(20);
//        System.out.println(a);

//       遍历集合
//        HashMap<String, Integer> map = new HashMap<>();
//        map.put("小乖",19);
//        map.put("小呆",20);
//        map.put("小艾",18);
//        map.put("小双",22);
//        map.put("小碟",24);
//        将map中集合的所有键存在set集合中
//        Set<String> set = map.keySet();
//        System.out.println(set);
//        遍历键
//        第一种
//        for (String s : set) {
//            System.out.println(s);
//            通过键获取值
//            Integer a = map.get(s);
//            键与值的拼接
//            System.out.println(s+"="+a);
//        }

//        第二种
        Set<Map.Entry<String, Integer>> set1 = map.entrySet();
//        Map.Entry就是键值对对象
//        for (Map.Entry<String, Integer> entry : set1) {
//            System.out.println(entry.getKey());//用entry.调用getKey()方法获取键
//            System.out.println(entry.getValue());//用entry调用getValue()方法获取值
//        }



    }
}
